from presenter.ticket import TicketPresenter

class OrderPresenter:
    """
    OrderPresenter 类用于将订单数据转换为字典格式，方便在不同层之间传递和展示。
    它接收一个订单数据对象，并将其各个属性转换为字典中的键值对，
    其中订单中的车票数据会通过 TicketPresenter 类进一步处理。
    """
    def __init__(self, data):
        """
        初始化 OrderPresenter 实例。

        Args:
            data: 订单数据对象，通常是从数据库查询得到的订单记录，
                  该对象应包含订单的各种属性，如 id、订单号、价格等。
        """
        self.data = data

    def as_dict(self):
        """
        将订单数据转换为字典格式。

        Returns:
            dict: 包含订单详细信息的字典，键包括 "id"、"orderNo"、"price"、
                  "state"、"paymentTime" 和 "tickets"。
        """
        return {
            # 订单的唯一标识符
            "id": self.data.id,
            # 订单号
            "orderNo": self.data.order_no,
            # 订单价格
            "price": self.data.price,
            # 订单状态
            "state": self.data.state,
            # 订单支付时间
            "paymentTime": self.data.payment_time,
            # 订单中的车票信息，使用 TicketPresenter 类将每张车票数据转换为字典
            "tickets": [TicketPresenter(ticket).as_dict() for ticket in self.data.tickets]
        }